Sinatra 微框架教程

1. 简介

Sinatra 是一个轻量级的 Ruby Web 框架,它允许开发者快速构建简单的 Web 应用程序。Sinatra 的设计哲学是“少即是多”,它提供了最基本的 Web 开发功能,让开发者可以专注于业务逻辑而不是框架的复杂性。

1.1 为什么选择 Sinatra?

  • 简单易用:Sinatra 的 API 非常简洁,学习曲线平缓。
  • 灵活性:你可以自由选择数据库、模板引擎等组件。
  • 快速开发:适合构建小型到中型的 Web 应用程序。

2. 安装 Sinatra

在开始之前,确保你已经安装了 Ruby 和 RubyGems。然后,你可以通过以下命令安装 Sinatra:

gem install sinatra

3. 创建第一个 Sinatra 应用

3.1 基本结构

创建一个新的 Ruby 文件,例如 app.rb,并添加以下代码:

require 'sinatra'

get '/' do
  "Hello, World!"
end

3.2 运行应用

在终端中运行以下命令来启动 Sinatra 应用:

ruby app.rb

打开浏览器并访问 http://localhost:4567,你应该会看到 "Hello, World!" 的输出。

4. 路由系统

Sinatra 的路由系统允许你定义 URL 和处理逻辑之间的映射。

4.1 基本路由

get '/hello' do
  "Hello, Sinatra!"
end

4.2 动态路由

你可以使用动态参数来处理不同的 URL:

get '/hello/:name' do
  "Hello, #{params[:name]}!"
end

4.3 POST 请求

除了 get,你还可以处理 post 请求:

post '/submit' do
  "You submitted: #{params[:message]}"
end

5. 视图和模板

Sinatra 支持多种模板引擎,如 ERB、Haml 和 Slim。

5.1 使用 ERB 模板

创建一个 views 目录,并在其中添加一个 index.erb 文件:

<h1>Welcome to Sinatra</h1>
<p>Hello, <%= @name %>!</p>

在 app.rb 中渲染模板:

get '/welcome' do
  @name = "Sinatra"
  erb :index
end

6. 实践练习

6.1 练习:创建一个简单的博客应用

  1. 创建路由:为博客的列表页面、详情页面和创建页面创建路由。
  2. 使用模板:使用 ERB 模板来渲染博客内容。
  3. 处理表单:使用 post 请求处理博客的创建。

6.2 示例代码

require 'sinatra'

# 模拟博客数据
blogs = []

get '/' do
  erb :index, locals: { blogs: blogs }
end

get '/blog/:id' do
  blog = blogs[params[:id].to_i]
  erb :show, locals: { blog: blog }
end

get '/new' do
  erb :new
end

post '/create' do
  blogs << { title: params[:title], content: params[:content] }
  redirect '/'
end

7. 总结

Sinatra 是一个简单而强大的 Ruby Web 框架,适合快速开发小型到中型的 Web 应用程序。通过本教程,你应该已经掌握了 Sinatra 的基本用法,包括路由、模板和表单处理。继续探索 Sinatra 的更多功能,如中间件、静态文件服务和会话管理,以构建更复杂的应用。

8. 进一步学习资源

通过这些资源,你可以深入了解 Sinatra 和 Ruby 的更多高级特性,进一步提升你的 Web 开发技能。